//引入axios
// const api = process.env.VUE_APP_API_URL;
const api = '/api';
import store from "@/store/store";
import axios from "axios";
import qs from "qs";

// axios.defaults.baseURL = api;
//设置默认请求头
axios.defaults.headers = {
  // "Content-Type": "application/x-www-form-urlencoded"
  "Content-Type": "application/json"
};
axios.defaults.timeout = 60000;

let cancel,
    promiseArr = {};
const CancelToken = axios.CancelToken;
//请求拦截器
// axios.interceptors.request.use(
//     config => {
//       //发起请求时，取消掉当前正在进行的相同请求
//       // if (promiseArr[config.url] && config.url == 'user/userSearch') {
//       //   promiseArr[config.url]('操作取消')
//       //   promiseArr[config.url] = cancel
//       // } else {
//       //   promiseArr[config.url] = cancel
//       // }
//       // if (config.method == 'post') {
//       //   config.data.unionId = store.state.user.unionId;
//       // }
//       // if (config.headers['Content-Type'] != 'multipart/form-data') {
//       //   config.data = qs.stringify(config.data);
//       // }
//       // // store.dispatch("SetLoading", config.url.indexOf('userSearch') > -1 || config.url.indexOf('mogondbBuriedPoint') > -1 ? 0 : true);
//       // return config;
//     },
//     error => {
//       setTimeout(function() {
//         // store.dispatch("SetLoading", 0);
//       }, 300);
//       return Promise.reject(error);
//     }
// );

// //响应拦截器即异常处理
// axios.interceptors.response.use(
//     response => {
//       console.log(response)
//       // if (response.config.url.indexOf('userSearch') > -1 || response.config.url.indexOf('mogondbBuriedPoint') > -1) {
//       //   // store.dispatch('SetLoading', 0);
//       //   return response;
//       // }
//       // store.dispatch('SetLoading', false)
//       return response;
//     },
//     err => {
//       // store.dispatch('SetLoading', false)
//       // if (err && err.response) {
//       //   switch (err.response.status) {
//       //     case 400:
//       //       err.message = "错误请求";
//       //       break;
//       //     case 401:
//       //       err.message = "未授权，请重新登录";
//       //       break;
//       //     case 403:
//       //       err.message = "拒绝访问";
//       //       break;
//       //     case 404:
//       //       err.message = "请求错误,未找到该资源";
//       //       break;
//       //     case 405:
//       //       err.message = "请求方法未允许";
//       //       break;
//       //     case 408:
//       //       err.message = "请求超时";
//       //       break;
//       //     case 500:
//       //       err.message = "服务器端出错";
//       //       break;
//       //     case 501:
//       //       err.message = "网络未实现";
//       //       break;
//       //     case 502:
//       //       err.message = "网络错误";
//       //       break;
//       //     case 503:
//       //       err.message = "服务不可用";
//       //       break;
//       //     case 504:
//       //       err.message = "网络超时";
//       //       break;
//       //     case 505:
//       //       err.message = "http版本不支持该请求";
//       //       break;
//       //     default:
//       //       err.message = `连接错误${err.response.status}`;
//       //   }
//       // } else {
//       //   if (err.message == '操作取消') {
//       //     err.response = {};
//       //     err.response.status = 409;
//       //     err.response.data = {};
//       //     return Promise.resolve(err.response);
//       //   } else {
//       //     err.message = "连接到服务器失败";
//       //   }
//       // }
//       // store.dispatch('SetLoading', 0);
//       console.error(err.response);
//       // let toast = Toast.$create({
//       //   type: 'error',
//       //   txt: err.message
//       // })
//       // toast.show();
//       return Promise.resolve(err.response);
//     }
// );

export default {
  //get请求
  get(url, param = {}) {
    return new Promise((resolve, reject) => {
      axios({
        method: "get",
        url: url+'?'+qs.stringify(param),
        // params: param,
        cancelToken: new CancelToken(c => {
          cancel = c;
        })
      }).then(res => {
        resolve(res.data);
      });
    });
  },
  //post请求
  post(url, param = {}) {
    return new Promise((resolve, reject) => {
      axios({
        method: "post",
        url,
        data: param,
        cancelToken: new CancelToken(c => {
          cancel = c;
        })
      }).then(res => {
        resolve(res.data);
      });
    });
  },
  //post file请求
  upFile(url, fd) {
    return new Promise((resolve, reject) => {
      axios
          .post(url, fd, { headers: { "Content-Type": "multipart/form-data" } })
          .then(res => {
            resolve(res.data);
          });
    });
  }
};
